/***************************************************************************
 *   Copyright (C) 2008 by BogDan Vatra                                    *
 *   bogdan@licentia.eu                                                    *
 *                                                                         *
 *   This program is free software: you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation, either version 3 of the License, or     *
 *   (at your option) any later version.                                   *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
 ***************************************************************************/


#include "repere.h"
#include <database.h>


using namespace SQL;

RepereObiecteInventar::RepereObiecteInventar(QWidget* parent, Qt::WFlags fl)
		: KontAMabilWindow(parent, fl), Ui::repereObiecteInventarForm(),m_inadaugare(false)
{
	setupUi(this);
	connect(defaultDatabase()->query("repereObiecteInventar"),SIGNAL(beforePost()),SLOT(beforePost()));
	connect(gestiuniLookup,SIGNAL(returnPressed()),SLOT(showRepere()));
	connect(tableview,SIGNAL(escapePressed()),SLOT(hideRepere()));
}

void RepereObiecteInventar::showRepere()
{
	defaultDatabase()->query("repereObiecteInventar")->bindValue( "id_gestiune", defaultDatabase()->query("gestiuniObiecteInventar")->value( "id" ) );
	defaultDatabase()->query("repereObiecteInventar")->select();
	repereFrame->setVisible( true );
	tableview->setFocus();
	gestiuniLookup->setEnabled(false);
}

void RepereObiecteInventar::hideRepere()
{
	repereFrame->setVisible( false );
	gestiuniLookup->setEnabled(true);
	gestiuniLookup->setFocus();
	layout()->activate();
	resize(QSize(width(), height() - repereFrame->height()));
}

void RepereObiecteInventar::showEvent ( QShowEvent * event )
{
	if (!m_inadaugare)
		hideRepere();
	KontAMabilWindow::showEvent(event);
}

void RepereObiecteInventar::beforePost()
{
	defaultDatabase()->query("repereObiecteInventar")->setValue( "id_gestiune", defaultDatabase()->query("gestiuniObiecteInventar")->value("id") );
}

bool RepereObiecteInventar::addReper(const QString & addStr, QString * result, qint64 * id)
{
	if (!defaultDatabase()->query("repereObiecteInventar")->canInsert())
		return false;

	m_inadaugare=true;
	showRepere();
	defaultDatabase()->query("repereObiecteInventar")->insert();
	denumireEdit->setText(addStr);
	denumireEdit->setCursorPosition(addStr.length());
	denumireEdit->setFocus();
	connect(defaultDatabase()->query("repereObiecteInventar"),SIGNAL(afterPost()),SLOT(accept()));
	connect(defaultDatabase()->query("repereObiecteInventar"),SIGNAL(afterCancel()),SLOT(reject()));
	bool res=exec();
	disconnect(defaultDatabase()->query("repereObiecteInventar"),SIGNAL(afterPost()),this, SLOT(accept()));
	disconnect(defaultDatabase()->query("repereObiecteInventar"),SIGNAL(afterCancel()),this, SLOT(reject()));
	if (res)
	{
		if (result)
			*result=defaultDatabase()->query("repereObiecteInventar")->value("denumire").toString();
		if (id)
			*id=defaultDatabase()->query("repereObiecteInventar")->value("id").toInt();
	}
	m_inadaugare=false;
	return res;
}

RepereObiecteInventar::~RepereObiecteInventar()
{
}
